package com.icangya.service;

import com.icangya.domain.*;

import java.sql.Timestamp;
import java.util.List;

public interface IRedWineGameService {

    /**
     * 根据字符串查询用户
     * @param lineStr
     * @return
     */
    User selectUserByLineStr(String lineStr);
    /**
     * 根据手机号码查询用户
     * @param mobilePhone
     * @return
     */
    User selectUserByMobilePhone(String mobilePhone);

    /**
     * 根据上架状态（Status）获取一条商品记录，status=1：已上架，status=0：已下架
     * @return
     */
    Rwshop getRwshop(String status);

    /**
     * 修改商品上架状态
     * @return
     */
    void setRwshopToState(long shopid,int status);

    /**
     * 修改商品
     * @return
     */
    boolean updateRwshop(Rwshop rwshop);



    /**
     * 根据商品id获取商品的图片列表
     * @param id
     * @return
     */
    List<RwshopPic> getRwshopPicListByShopId(long id);

    /**
     * 根据商品id获取商品
     * @param id
     * @return
     */
    Rwshop getRwshopById(long id);

    /**
     * 根据用户的id获取用户的所有订单信息
     * @param userid
     * @return
     */
    List<RwGoodOrder> getRwGoodOrdersByUserId(long userid);

    /**
     * 所有订单信息
     * @return
     */
    List<RwGoodOrder> getRwGoodOrders();
    /**
     * 根据支付状态和发货状态所有订单信息
     * @return
     */
    List<RwGoodOrder> getOrderListByPayStataAndSendStatus(int payStatus,int sendStatus);

    /**
     * 添加一条订单信息
     * @param rwGoodOrder
     * @return
     */
    long  saveGoodOrder(RwGoodOrder rwGoodOrder);


    /**
     * 更新一条订单信息
     * @param rwGoodOrder
     * @return
     */
    boolean  updateGoodOrder(RwGoodOrder rwGoodOrder);

    /**
     * 根据订单id（不是订单号）获取订单详细信息
     * @param id
     * @return
     */
    RwGoodOrder getRwGoodOrderById(long id);

    /**
     * 根据订单号获取单条订单详细信息
     * @param orderId
     * @return
     */
    public RwGoodOrder getRwGoodOrderByOrderId(String orderId);

    /**
     * 商品添加购物车
     * @param rwBuyCar
     * @return
     */
    long saveBuyCar(RwBuyCar rwBuyCar);


    /**
     * 获取用户的购物车商品列表
     * @param userid
     * @return
     */
    List<RwBuyCar> getBuyCarEveryGood(long userid);

    /**
     * 添加vip用户
     * @param rwShopVip
     * @return
     */
    long saveShopVip(RwShopVip rwShopVip);

    /**
     * 添加返佣记录
     * @param commissionRecord
     * @return
     */
    long saveCommissionRecord(CommissionRecord commissionRecord);

    /**
     * 根据userid 获取佣金额
     * @param userid
     * @return
     */
    Commission getCommissionByUserid(long userid);

    /**
     * 添加支付记录
     * @param fbPayInfo
     * @return
     */
    long saveFbPayInfo(FbPayInfo fbPayInfo);

    /**
     *根据日期查询支付记录
     */
    List<FbPayInfo> getFbPayInfoListByDate(Timestamp payDate);


    /**
     * 添加当天总收入记录
     */
    long saveGainRecord(GainRecord gainRecord);

    /**
     * 获取变量值
     */
    RwVariable getRwVariableById(long id);

    /**
     * 更新变量
     * @param rwVariable
     * @return
     */
    boolean updateRwVariable(RwVariable rwVariable);

    /**
     * 获取vip用户列表
     */
    List<RwShopVip> getVipUser();

    /**
     * 根据userid获取vip用户
     */
    List<RwShopVip> getVipUserByuserid(long userid);

    /**
     * 添加用户得到股份的记录
     */
    long insertRwShopSharesRecord(RwShopSharesRecord rwShopSharesRecord);

    /**
     * 添加用户股份权表
     */
    long insertRwShopShares(RwShopShares rwShopShares);

    /**
     * 更新用户的股份总数
     */
    boolean updateRwShopShares(long userid ,int sharesNum);

    /**
     * 获取所有用户的总股份
     */
    int getSharesSum();

    /**
     * 根据userid获取用户的股份
     */
    RwShopShares getSharesSum(long userid);
    /**
     * 获取占有股份的用户列表
     */
    List<RwShopShares> getHaveSharesUser();

    /**
     * 用户添加地址
     */
    long insertUserAddress(RwUserAddress rwUserAddress);

    /**
     * 根据id用户添加地址
     */
    void deleteUserAddress(long id);

    /**
     * 获取用户的地址列表
     * @param userid
     * @return
     */
    List<RwUserAddress> getUserAddressList(long userid);

    /**
     * 根据地址ID获取用户的地址
     * @param id
     * @return
     */
    RwUserAddress getUserAddressById(long id);

    /**
     * 获取轮播图列表
     * @return
     */
    List<RwCarousePic> getCarouseList();


    /**
     * 获取所有支付记录
     * @return
     */
    List<FbPayInfo> getPayInfolist();
    /**
     * 添加商品详情图
     * @return
     */
    long saveShopInfoPic(RwshopPic rwshopPic);


    /**
     * 获取所有申请提现的用户以及银行卡信息
     * @return
     */
    List<RwUserBank> selectAllNeedPayInfo();

    /**
     * 添加userBank
     * @param rwUserBank
     * @return
     */
    long saveUserBank(RwUserBank rwUserBank);

    /**
     * 更新userbankk
     * @param rwUserBank
     * @return
     */
    boolean updateUserBank(RwUserBank rwUserBank);

    /**
     * 获取userbank  by  id
     * @param id
     * @return
     */
    RwUserBank getUserBankById(long id);
    /**
     * 获取userbank  by  userid
     * @param userid
     * @return
     */
    List<RwUserBank> getUserBanksByUserid(long userid);

    /**
     *添加轮播图记录
     * @param rwCarousePic
     * @return
     */
    long addCarouse(RwCarousePic rwCarousePic);

    /**
     *添加用户银行卡
     * @param rwBank
     * @return
     */
    long addUserbankCard(RwBank rwBank);

    /**
     *获取用户银行卡
     * @param userid
     * @return
     */
    List<RwBank> getUserbankCardListByuserid(long userid);

    /**
     *获取银行卡
     * @param id
     * @return
     */
    RwBank getUserbankCardBybankid(long id);

    /**
     * 删除轮播图
     * @param id
     * @return
     */
    void deleteCarouseById(long id);

}
